package com.gxa.clientarticle.controller;

/*
 *
 *@author leijun
 *
 *@creating 2020/10/20 9:55
 *
 */


import com.gxa.clientarticle.exception.BusinessException;
import com.gxa.clientarticle.utils.JsonResult;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.io.IOException;
import java.util.Map;
import java.util.UUID;

/**
 * @ClassName UploadController
 * @Description TODO
 * @Author 俊
 * @Date 2020/10/20 9:55
 * @Version 1.0
 */
@RestController

public class UploadController {

    @RequestMapping("/upload")
    public Map upload(@RequestParam("file") MultipartFile file){
        JsonResult jsonResult = new JsonResult();
        if (file.isEmpty()){
            throw new BusinessException("空文件不能上传");
        }
        //判断文件大小是否符合要求（不能超过1M）
        if (file.getSize() > 1024*1024){
            throw new BusinessException("文件不能大于1M");
        }
        //获得上传文件的原始文件名
        String originalFilename = file.getOriginalFilename();
        //获得上传文件的后缀名
        String substring = originalFilename.substring(originalFilename.lastIndexOf(".") + 1);
        //后缀必须是：.png / .jpg /.jpeg /.gif
        //判断上传文件的后缀名是否符合规范
        if (substring.trim().equals("png") ||substring.trim().equals("jpg")||substring.trim().equals("jpeg")||substring.trim().equals("gif")){
            //通过UUID生成文件名+原来的后缀->组成新的文件名
            String newFileName="/img/"+UUID.randomUUID().toString().replace("-","")+"."+substring;//将上传文件的文件名替换，显示虚拟的文件

            String newFileName2="/usr/upload"+newFileName;//真实的文件路径

            //在springboot项目中 ，如何把上传的文件保存在指定的位置
            //目标路径：/img/fileName
            //真实路径：/usr/upload/img
            //在目标路径和真实路径之间进行关系映射（ResourceHandlerRegistry）

            //返回给前端
            File uploadFile = new File(newFileName2);
            try {
                file.transferTo(uploadFile);
            } catch (IOException e) {
                e.printStackTrace();
            }
            jsonResult.setCode("1");
            jsonResult.setMsg("图片上传成功");
            jsonResult.put("fileName",newFileName);
        }
        return jsonResult.getValues();
    }
}
